home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
music_utilities
/
pt011.dms
/
pt011.adf
/
Kryptor
/
Kryptor.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-03-20
|
2KB
|
105 lines
#define INTUITIONPRIVATE 1
#include <exec/exec.h>
#include <intuition/intuitionbase.h>
#include <functions.h>
#include <libraries/dosextens.h>
#include <libraries/reqbase.h>
struct ReqBase *ReqBase;
struct FileRequester MyFileReqStruct;
char filename[FCHARS+1],
directoryname[DSIZE+1],
answerarray[DSIZE+FCHARS+1];
Anfang()
{
if((ReqBase = (struct ReqBase *)OpenLibrary("req.library", NULL)) == NULL)
exit(20);
directoryname[0] = filename[0] = answerarray[0] = 0;
MyFileReqStruct.PathName = answerarray;
MyFileReqStruct.Dir = directoryname;
MyFileReqStruct.File = filename;
MyFileReqStruct.dirnamescolor = 2;
MyFileReqStruct.devicenamescolor = 2;
MyFileReqStruct.Show[0] = 0;
MyFileReqStruct.Flags = FRQCACHINGM+FRQINFOGADGETM+FRQLOADINGM;
MyFileReqStruct.Title = "Welche Datei ver-/entschlüsseln?";
}
Ende()
{
CloseLibrary(ReqBase);
exit(0);
}
long FileSize(name)
char *name;
{ struct FileLock *fl = NULL;
struct FileInfoBlock *fib;
long size = 0L;
if(fib = AllocMem((long)sizeof(struct FileInfoBlock), MEMF_PUBLIC+MEMF_CLEAR))
{ if(fl = Lock(name, ACCESS_READ))
{ if(Examine(fl, fib))
size = fib->fib_Size;
UnLock(fl);
}
FreeMem(fib, (long)sizeof(struct FileInfoBlock));
}
return size;
}
main()
{ char *text, passwort[32];
struct FileHandle *fp;
long j, k, size;
int pwsize;
Anfang();
setmem(passwort, 32, 0);
do
{ text = size = NULL;
if(FileRequester(&MyFileReqStruct))
{ if(fp = Open(answerarray, MODE_OLDFILE))
{ size = FileSize(answerarray);
if(text = AllocMem(size, MEMF_PUBLIC+MEMF_CLEAR ))
Read(fp, text, size);
else
SimpleRequest("Zu wenig freier Speicher.");
Close(fp);
}
else
SimpleRequest("Ich kann %s nicht öffnen.", answerarray);
}
else Ende(); /* Cancel im FR beendet Programm */
if(text)
{ if(GetString(passwort, "Welches Paßwort?", NULL, 32L, 32L))
{ if(pwsize = strlen(passwort))
{ for(j=0L, k=0L; j<size; j++)
{ text[j] ^= passwort[k];
if(++k > pwsize) k = 0L;
}
if(fp = Open(answerarray, MODE_NEWFILE))
{ Write(fp, text, size);
Close(fp);
SimpleRequest("Datei %s wurde mit\nPaßwort %s behandelt.",
answerarray, passwort);
}
else
SimpleRequest("Ich kann %s nicht überschreiben.", answerarray);
}
}
FreeMem(text, size);
}
} while(1);
}